#include <iostream>
#include "Jeu.h"
#include "Random.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

using namespace std;

void creerEpeeRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100];
    int degats;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    degats = nbrAleatoire(0, 100);//*Niveau;
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("EPEE ", *fichier);
    fprintf(*fichier, "Epee_%s ", qualificatif);
    fprintf(*fichier, "%d ", degats);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerHacheRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int degats;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    degats = nbrAleatoire(0, 100);//*Niveau;
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("HACHE ", *fichier);
    fprintf(*fichier, "Hache_%s ", qualificatif);
    fprintf(*fichier, "%d ", degats);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerBatonRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100];
    int degats;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    degats = nbrAleatoire(0, 75);//*Niveau;
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("BATON ", *fichier);
    fprintf(*fichier, "Baton_%s ", qualificatif);
    fprintf(*fichier, "%d ", degats);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("2 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerArcRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int degats;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    degats = nbrAleatoire(0, 50);//*Niveau;
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("ARC ", *fichier);
    fprintf(*fichier, "Arc_%s ", qualificatif);
    fprintf(*fichier, "%d ", degats);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("3 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerCasqueRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int armure;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    armure = nbrAleatoire(0,100);
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("CASQUE ", *fichier);
    fprintf(*fichier, "Casque_%s ", qualificatif);
    fputs("0 ", *fichier);
    fprintf(*fichier, "%d ", armure);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerPlastronRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int armure;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    armure = nbrAleatoire(0,100);
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("PLASTRON ", *fichier);
    fprintf(*fichier, "Plastron_%s ", qualificatif);
    fputs("0 ", *fichier);
    fprintf(*fichier, "%d ", armure);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerJambiereRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int armure;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    armure = nbrAleatoire(0,100);
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("JAMBIERE ", *fichier);
    fprintf(*fichier, "Jambiere_%s ", qualificatif);
    fputs("0 ", *fichier);
    fprintf(*fichier, "%d ", armure);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);
}

void creerBottesRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int armure;
    int typeBonus;
    int valeurBonus;
    valeurBonus = nbrAleatoire(0, 100);
    typeBonus = nbrAleatoire(0,20);
    armure = nbrAleatoire(0,100);
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("BOTTES ", *fichier);
    fprintf(*fichier, "Bottes_%s ", qualificatif);
    fputs("0 ", *fichier);
    fprintf(*fichier, "%d ", armure);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    if (typeBonus == 0)
    {
        fputs("FORCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 1)
    {
        fputs("AGILITE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else if (typeBonus == 2)
    {
        fputs("INTELLIGENCE ", *fichier);
        fprintf(*fichier, "%d ", valeurBonus);
    }
    else
    {
        fputs("AUCUN ", *fichier);
    }
    fputs("AUCUN", *fichier);
    fputs("\n\n", *fichier);

}

void creerPotionRandom(Jeu *Niveau, FILE** fichier, int i)
{
    char qualificatif[100] = {0};
    int armure;
    int restauration;
    int typeRestauration;
    typeRestauration = nbrAleatoire(1,2);
    restauration = nbrAleatoire(50,200);
    piocherMot(qualificatif);
    fprintf(*fichier, "%d ", i);
    fputs("POTION ", *fichier);
    fprintf(*fichier, "Potion_%s ", qualificatif);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("0 ", *fichier);
    fputs("AUCUN ", *fichier);
    if (typeRestauration == 1)
    {
        fputs("VIE ", *fichier);
    }
    else if (typeRestauration == 2)
    {
        fputs("MANA ", *fichier);
    }
    fprintf(*fichier, "%d", restauration);


    fputs("\n\n", *fichier);
}

void creerObjetRandom(Jeu *Niveau , char nomfichier[100], int nombreCreation)
{
    int i = 1;
    int numero;
    FILE* fichier = NULL ;
    fichier = fopen(nomfichier, "w+");

    if (fichier != NULL)
    {
        fputs("//Type | Nom | Degats | Armure | Prix| Niveau | Portee | Bonus?(Valeur) | Restauration?(Valeur)?\n\n", fichier);
        fprintf(fichier, "%d\n\n", nombreCreation);
        fputs("0 RIEN NULL 0 0 0 0 0 AUCUN AUCUN\n\n", fichier);
        for (i = 1; i<nombreCreation; i++)
        {
            numero = nbrAleatoire(1, 9);
            cout<<numero<< " ";
            switch(numero)
            {
            case 1:
                creerEpeeRandom(Niveau, &fichier, i);
                break;
            case 2:
                creerHacheRandom(Niveau, &fichier, i);
                break;
            case 3:
                creerBatonRandom(Niveau, &fichier, i);
                break;
            case 4:
                creerArcRandom(Niveau, &fichier, i);
                break;
            case 5:
                creerCasqueRandom(Niveau, &fichier, i);
                break;
            case 6:
                creerPlastronRandom(Niveau, &fichier, i);
                break;
            case 7:
                creerJambiereRandom(Niveau, &fichier, i);
                break;
            case 8:
                creerBottesRandom(Niveau, &fichier, i);
                break;
            case 9:
                creerPotionRandom(Niveau, &fichier, i);
                break;
            }
        }
        fclose(fichier);
    }
}
